#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <sys/wait.h>

#define NUM 5
typedef void (*func_t) (); // 任务的函数


void Flush()
{
	printf("这是一个刷新任务\n");
}
void DownLoad()
{
	printf("这是一个下载任务\n");
}
void Log()
{
	printf("这是一个日志任务\n");
}

void registerHandler(func_t functions[], func_t func)
{
	int i = 0;
	for(; i < NUM; i++) if(functions[i] == NULL) break;
	if(i == NUM) return ;
	functions[i] = func;
	functions[i + 1] = NULL;
}

int main()
{
	// 任务列表
	func_t functions[NUM] = { NULL };
	registerHandler(functions, Flush);
	registerHandler(functions, DownLoad);
	registerHandler(functions, Log);
	pid_t id = fork(); // 创建子进程
	if(id < 0)
	{
		printf("子进程创建失败");
		return 1;
	}
	else if(id == 0) // 子进程
	{
		sleep(5);
		exit(1); // 退出码是1
	}
	else
	{
		int status = -1;
		pid_t option = waitpid(id, &status, WNOHANG);
		if(pid > 0) { return 0;}

	
	return 0;
}
